Skip to content

Commit

Permalink
story PoC #376
Browse files Browse the repository at this point in the history
  • Loading branch information
Rello committed Nov 20, 2023
1 parent 55d62b2 commit 1337a07
Show file tree
Hide file tree
Showing 8 changed files with 554 additions and 218 deletions.
7 changes: 7 additions & 0 deletions appinfo/routes.php
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,13 @@
['name' => 'dataset#update', 'url' => '/dataset/{datasetId}', 'verb' => 'PUT'],
['name' => 'dataset#status', 'url' => '/dataset/{datasetId}/status', 'verb' => 'GET'],

// Story
['name' => 'story#index', 'url' => '/story', 'verb' => 'GET'],
['name' => 'story#create', 'url' => '/story', 'verb' => 'POST'],
['name' => 'story#read', 'url' => '/story/{storyId}', 'verb' => 'GET'],
['name' => 'story#delete', 'url' => '/story/{storyId}', 'verb' => 'DELETE'],
['name' => 'story#update', 'url' => '/story/{storyId}', 'verb' => 'PUT'],

// Data Output
['name' => 'output#read', 'url' => '/data/{reportId}', 'verb' => 'GET'],
['name' => 'output#readPublic', 'url' => '/data/public/{token}', 'verb' => 'GET'],
Expand Down
487 changes: 340 additions & 147 deletions js/story.js

Large diffs are not rendered by default.

17 changes: 13 additions & 4 deletions js/storyNavigation.js
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ OCA.Analytics.Navigation = {
.then(response => response.json())
.then(data => {
OCA.Analytics.Navigation.buildNavigation(data);
OCA.Analytics.reports = data;
OCA.Analytics.Story.stories = data;
if (datasetId && data.indexOf(data.find(o => parseInt(o.id) === parseInt(datasetId))) !== -1) {
OCA.Analytics.Sidebar.close();
let navigationItem = document.querySelector('#navigationDatasets [data-id="' + datasetId + '"]');
Expand All @@ -60,7 +60,7 @@ OCA.Analytics.Navigation = {
if (data === undefined || data.length === 0) {
document.getElementById('navigationDatasets').appendChild(OCA.Analytics.Navigation.buildIntroRow());
} else {
document.getElementById('navigationDatasets').appendChild(OCA.Analytics.Navigation.buildOverviewButton());
// document.getElementById('navigationDatasets').appendChild(OCA.Analytics.Navigation.buildOverviewButton());
for (let navigation of data) {
OCA.Analytics.Navigation.buildNavigationRow(navigation);
}
Expand Down Expand Up @@ -202,7 +202,7 @@ OCA.Analytics.Navigation = {
a.appendChild(divFav);
}

if (!OCA.Analytics.isAdvanced) {
/* if (!OCA.Analytics.isAdvanced) {
let divUtils = OCA.Analytics.Navigation.buildNavigationUtils(data);
let divMenu = OCA.Analytics.Navigation.buildNavigationMenu(data);
if (divMenu.firstElementChild.firstElementChild.childElementCount !== 0) {
Expand All @@ -213,7 +213,7 @@ OCA.Analytics.Navigation = {
} else {
let divUtils = OCA.Analytics.Navigation.buildNavigationUtilsDataset(data);
li.appendChild(divUtils);
}
}*/

if (typeINT === OCA.Analytics.TYPE_GROUP) {
li.appendChild(ulSublist);
Expand Down Expand Up @@ -414,6 +414,7 @@ OCA.Analytics.Navigation = {
}
evt.target.parentElement.classList.add('active');
}
/*
if (OCA.Analytics.isAdvanced) {
OCA.Analytics.Advanced.showSidebar(evt);
evt.stopPropagation();
Expand All @@ -427,6 +428,14 @@ OCA.Analytics.Navigation = {
OCA.Analytics.Sidebar.close();
OCA.Analytics.Backend.getData();
}
*/
OCA.Analytics.Story.currentStory = OCA.Analytics.Story.stories.find(x => parseInt(x.id) === parseInt(evt.target.dataset.id));
// create a proper object out of the pages string
// as objects are always assigned as references in the line above, check if the object was already parsed
if (typeof OCA.Analytics.Story.currentStory.pages === 'string') {
OCA.Analytics.Story.currentStory.pages = JSON.parse(OCA.Analytics.Story.currentStory.pages);
}
OCA.Analytics.Story.getStory();
},

handleOptionsClicked: function (evt) {
Expand Down
21 changes: 8 additions & 13 deletions lib/Controller/StoryController.php
Original file line number Diff line number Diff line change
Expand Up @@ -51,18 +51,15 @@ public function index()
*
* @NoAdminRequired
* @param $name
* @param $subheader
* @param int $type
* @param int $page
* @param int $parent
* @param $reports
* @param $layout
* @param int $pages
* @return DataResponse
* @throws Exception
*/
public function create($name, $subheader, int $type, int $page, int $parent, $reports, $layout)
public function create($name, int $type, int $parent, int $pages)
{
return new DataResponse($this->StoryService->create($name, $subheader, $type, $page, $parent, $reports, $layout));
return new DataResponse($this->StoryService->create($name, $type, $parent, $pages));
}


Expand Down Expand Up @@ -98,19 +95,17 @@ public function delete(int $storyId)
* get report details
*
* @NoAdminRequired
* @param int $id
* @param int $storyId
* @param $name
* @param $subheader
* @param int $type
* @param int $page
* @param int $parent
* @param $reports
* @param $layout
* @param $pages
* @return DataResponse
* @throws Exception
*/
public function update(int $id, $name, $subheader, int $type, int $page, int $parent, $reports, $layout)
public function update(int $storyId, $name, int $type, int $parent, $pages)
{
return new DataResponse($this->StoryService->update($id, $name, $subheader, $type, $page, $parent, $reports, $layout));
$pages = json_encode($pages);
return new DataResponse($this->StoryService->update($storyId, $name, $type, $parent, $pages));
}
}
27 changes: 7 additions & 20 deletions lib/Db/StoryMapper.php
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,6 @@ public function index()
$sql->from(self::TABLE_NAME)
->select('*')
->where($sql->expr()->eq('user_id', $sql->createNamedParameter($this->userId)))
->andWhere($sql->expr()->eq('page', $sql->createNamedParameter('0')))
->orderBy('name', 'ASC');
$statement = $sql->executeQuery();
$result = $statement->fetchAll();
Expand All @@ -60,28 +59,22 @@ public function index()
/**
* create report
* @param $name
* @param $subheader
* @param $type
* @param $page
* @param $parent
* @param $reports
* @param $layout
* @param $pages
* @return int
* @throws Exception
*/
public function create($name, $subheader, $type, $page, $parent, $reports, $layout)
public function create($name, $type, $parent, $pages)
{
$sql = $this->db->getQueryBuilder();
$sql->insert(self::TABLE_NAME)
->values([
'user_id' => $sql->createNamedParameter($this->userId),
'name' => $sql->createNamedParameter($name),
'subheader' => $sql->createNamedParameter($subheader),
'type' => $sql->createNamedParameter($type),
'page' => $sql->createNamedParameter($page),
'parent' => $sql->createNamedParameter($parent),
'reports' => $sql->createNamedParameter($reports),
'layout' => $sql->createNamedParameter($layout),
'pages' => $sql->createNamedParameter($pages),
]);
$sql->executeStatement();
return (int)$sql->getLastInsertId();
Expand All @@ -101,7 +94,7 @@ public function readOwn(int $id)
->where($sql->expr()->eq('id', $sql->createNamedParameter($id)))
->orWhere($sql->expr()->eq('parent', $sql->createNamedParameter($id)))
->andWhere($sql->expr()->eq('user_id', $sql->createNamedParameter($this->userId)))
->orderBy('page', 'ASC');
->orderBy('name', 'ASC');
$statement = $sql->executeQuery();
$result = $statement->fetch();
$statement->closeCursor();
Expand All @@ -113,27 +106,21 @@ public function readOwn(int $id)
* update report
* @param $id
* @param $name
* @param $subheader
* @param $type
* @param $page
* @param $parent
* @param $reports
* @param $layout
* @param $pages
* @return bool
* @throws Exception
*/
public function update($id, $name, $subheader, $type, $page, $parent, $reports, $layout)
public function update($id, $name, $type, $parent, $pages)
{
$name = $this->truncate($name, 64);
$sql = $this->db->getQueryBuilder();
$sql->update(self::TABLE_NAME)
->set('name', $sql->createNamedParameter($name))
->set('subheader', $sql->createNamedParameter($subheader))
->set('type', $sql->createNamedParameter($type))
->set('page', $sql->createNamedParameter($page))
->set('parent', $sql->createNamedParameter($parent))
->set('reports', $sql->createNamedParameter($reports))
->set('layout', $sql->createNamedParameter($layout))
->set('pages', $sql->createNamedParameter($pages))
->where($sql->expr()->eq('user_id', $sql->createNamedParameter($this->userId)))
->andWhere($sql->expr()->eq('id', $sql->createNamedParameter($id)));
$sql->executeStatement();
Expand Down
14 changes: 1 addition & 13 deletions lib/Migration/Version4012Date20231108180000.php
Original file line number Diff line number Diff line change
Expand Up @@ -50,26 +50,14 @@ public function changeSchema(IOutput $output, Closure $schemaClosure, array $opt
'notnull' => true,
'length' => 64,
]);
$table->addColumn('subheader', 'string', [
'notnull' => false,
'length' => 256,
]);
$table->addColumn('type', 'integer', [
'notnull' => false,
]);
$table->addColumn('page', 'integer', [
'notnull' => false,
]);
$table->addColumn('parent', 'integer', [
'notnull' => false,
]);
$table->addColumn('reports', 'string', [
'notnull' => false,
'length' => 256,
]);
$table->addColumn('layout', 'string', [
$table->addColumn('pages', 'text', [
'notnull' => false,
'length' => 1000,
]);
$table->setPrimaryKey(['id']);
$table->addIndex(['user_id'], 'analytics_dataset_user_id_idx');
Expand Down
20 changes: 8 additions & 12 deletions lib/Service/StoryService.php
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ public function __construct(
$this->ShareService = $ShareService;
$this->DatasetService = $DatasetService;
$this->StoryMapper = $StoryMapper;
$this->ActivityManager = $ActivityManager;
$this->ActivityManager = $ActivityManager;
$this->rootFolder = $rootFolder;
$this->VariableService = $VariableService;
$this->config = $config;
Expand All @@ -75,6 +75,7 @@ public function __construct(
*
* @return array
* @throws PreConditionNotMetException
* @throws Exception
*/
public function index(): array
{
Expand Down Expand Up @@ -126,18 +127,15 @@ public function isOwn(int $storyId)
* create new blank report
*
* @param $name
* @param $subheader
* @param int $type
* @param int $page
* @param int $parent
* @param $reports
* @param $layout
* @param $pages
* @return int
* @throws Exception
*/
public function create($name, $subheader, int $type, int $page, int $parent, $reports, $layout): int
public function create($name, int $type, int $parent, $pages): int
{
$reportId = $this->StoryMapper->create($name, $subheader, $type, $page, $parent, $reports, $layout);
$reportId = $this->StoryMapper->create($name, $type, $parent, $pages);
//$this->ActivityManager->triggerEvent($reportId, ActivityManager::OBJECT_REPORT, ActivityManager::SUBJECT_REPORT_ADD);
return $reportId;
}
Expand All @@ -149,16 +147,14 @@ public function create($name, $subheader, int $type, int $page, int $parent, $re
* @param $name
* @param $subheader
* @param int $type
* @param int $page
* @param int $parent
* @param $reports
* @param $layout
* @param $pages
* @return bool
* @throws Exception
*/
public function update(int $id, $name, $subheader, int $type, int $page, int $parent, $reports, $layout)
public function update(int $id, $name, int $type, int $parent, $pages)
{
return $this->StoryMapper->update($id, $name, $subheader, $type, $page, $parent, $reports, $layout);
return $this->StoryMapper->update($id, $name, $type, $parent, $pages);
}

/**
Expand Down
Loading

0 comments on commit 1337a07

Please sign in to comment.