瀏覽代碼

added route Zaliczka with base simple schema acl class

Piotr Labudda 9 年之前
父節點
當前提交
a6a44cd379

+ 1 - 0
SE/se-lib/Api/WfsServerBase.php

@@ -1408,6 +1408,7 @@ if($DBG){echo 'L.' . __LINE__ . ' $validateConvertedTransactionXsdString:';print
 			$rootNode->setAttribute('targetNamespace', Api_WfsNs::getNsUri($acl->getSourceName()));
 			$rootNode->setAttribute('targetNamespace', Api_WfsNs::getNsUri($acl->getSourceName()));
 			$typeName = $type . 'Type';
 			$typeName = $type . 'Type';
 			$fldList = $this->_getFieldListFromAcl($acl);
 			$fldList = $this->_getFieldListFromAcl($acl);
+			DBG::_('DBG_XSD', '>1', "field list", $fldList, __CLASS__, __FUNCTION__, __LINE__);
 
 
 			$cTypeNode = $dom->createElementNS('http://www.w3.org/2001/XMLSchema', 'xsd:complexType');
 			$cTypeNode = $dom->createElementNS('http://www.w3.org/2001/XMLSchema', 'xsd:complexType');
 			$rootNode->appendChild($cTypeNode);
 			$rootNode->appendChild($cTypeNode);

+ 128 - 0
SE/se-lib/Core/AclSimpleSchemaBase.php

@@ -0,0 +1,128 @@
+<?php
+
+Lib::loadClass('Api_WfsNs');
+Lib::loadClass('Api_WfsException');
+Lib::loadClass('User');
+Lib::loadClass('Core_AclHelper');
+
+class Core_AclSimpleSchemaBase extends Core_AclBase {
+
+  public $_simpleSchema = array();
+  public $_xsdTypes = null;
+
+  public function getSimpleSchema() { return $this->_simpleSchema; }
+
+  public function getNamespace() { return 'default_objects/' . $this->getName(); }
+  public function getSourceName() { return 'default_objects'; }
+  public function init($force = false) {}
+  public function isInitialized() { return true; }
+  public function getFieldListByIdZasob() { return $this->getRealFieldListByIdZasob(); }
+  public function getVisibleFieldListByIdZasob() { return $this->getRealFieldListByIdZasob(); }
+  public function getVirtualFieldListByIdZasob() { return array(); }
+  public function getRealFieldListByIdZasob($force = false) {
+    $cols = array();
+    foreach ($this->getFields() as $idField => $field) {
+      $cols[$idField] = $field['name'];
+    }
+    return $cols;
+  }
+  public function getXsdTypes() {
+    if (null !== $this->_xsdTypes) return $this->_xsdTypes;
+    $this->_xsdTypes = array();
+    $generatedIdZasob = 10000;
+    foreach ($this->_simpleSchema as $key => $value) {
+      if ('@' == substr($key, 0, 1)) continue;// skip attributes
+      if (is_array($value)) {
+        $fieldName = $key;
+        $field = [ 'name' => $fieldName, 'perms' => 'R', 'idZasob' => $generatedIdZasob ];
+        if (!empty($value['@baseTypeName'])) $field['xsdType'] = "alias_ref:{$value['@baseTypeName']}";
+        else if (!empty($value['@ref'])) $field['xsdType'] = "alias_ref:{$value['@ref']}";
+        else throw new Exception("StorageAcl - field type not defined '{$key}'");
+        if (!empty($value['@maxOccurs'])) $field['maxOccurs'] = $value['@maxOccurs'];
+        $this->_xsdTypes[$fieldName] = $field;
+      } else if (is_scalar($value)) {
+        $fieldName = $key;
+        $field = [ 'name' => $fieldName, 'perms' => 'R', 'idZasob' => $generatedIdZasob ];
+        $field['xsdType'] = $value;
+        $this->_xsdTypes[$fieldName] = $field;
+      } else {
+        throw new Exception("StorageAcl - TODO: Unimplemented value type in simpleSchema: " . json_encode($value));
+      }
+      $generatedIdZasob++;
+    }
+    return $this->_xsdTypes;
+  }
+  public function getFields() {// @returns array - $this->_fields
+    $fieldsById = array();
+    foreach ($this->getXsdTypes() as $fieldName => $field) {
+      $field['name'] = $fieldName;
+      $fieldsById[ $field['idZasob'] ] = $field;
+    }
+    return $fieldsById;
+  }
+  public function getFieldType($fieldName) {
+    foreach ($this->getFields() as $field) {
+      if ($fieldName == $field['name']) return $field;
+    }
+    return null;
+	}
+
+  // TODO: replace legacy functions: isAllowed, hasFieldPerm, getFieldIdByName
+  public function canCreateField($fieldName) {
+    return false;// TODO: perms from Procesy
+  }
+  public function canReadField($fieldName) {
+    return true;// TODO: perms from Procesy
+  }
+  public function canReadObjectField($fieldName, $record) {
+    return true;// TODO: perms from Procesy
+  }
+  public function canWriteField($fieldName) {
+    return false;// TODO: perms from Procesy
+  }
+  public function canWriteObjectField($fieldName, $record) {
+    return false;// TODO: perms from Procesy
+  }
+
+  public function getTotal($params = array()) {// TODO: use ParseOgcQuery
+    throw new Exception("Unimplemented - TODO: F." . __FUNCTION__);
+  }
+  public function getItem($primaryKey) {
+    throw new Exception("Unimplemented - TODO: F." . __FUNCTION__);
+  }
+  public function getItems($params = array()) {// TODO: use ParseOgcQuery
+    throw new Exception("Unimplemented - TODO: F." . __FUNCTION__);
+  }
+  public function fetchItemRef(&$items) {
+    throw new Exception("Unimplemented - TODO: F." . __FUNCTION__);
+  }
+  public function addItem($itemTodo) {
+    throw new Exception("Unimplemented - TODO: F." . __FUNCTION__);
+    // return $this->parentAcl->addItem($itemTodo);
+  }
+  public function updateItem($itemPatch) {
+    throw new Exception("Unimplemented - TODO: F." . __FUNCTION__);
+    // return $this->parentAcl->updateItem($itemPatch);
+  }
+
+  public function getGeomFieldType($fieldName) { return null; }
+  public function getPrimaryKeyField() { return 'ID'; }
+  public function getID() { return 0; }
+  public function getAttributesFromZasoby() { return array(); }
+  public function isEnumerationField($fieldName) { return false; }
+  public function getEnumerations($fieldName) { return null; }
+  public function getXsdFieldType($fieldName) {
+    $xsdTypes = $this->getXsdTypes();
+    if (empty($xsdTypes[$fieldName])) throw new Exception("Field '{$fieldName}' not exists");
+    return $xsdTypes[$fieldName]['xsdType'];
+  }
+  public function isGeomField($fldName) {
+    if ('File' == $fieldName) return false;
+    if ('AccessGroupRead' == $fieldName) return false;
+    if ('AccessGroupWrite' == $fieldName) return false;
+    if ('AccessOwner' == $fieldName) return false;
+    // if ('NestedObjectTest' == $fieldName) return false;
+    // return $this->parentAcl->isGeomField($fldName);
+  }
+
+}

+ 220 - 0
SE/se-lib/Route/UrlAction/UserProNetMediaZaliczka.php

@@ -0,0 +1,220 @@
+<?php
+
+Lib::loadClass('RouteBase');
+Lib::loadClass('Typespecial');
+Lib::loadClass('TypespecialVariable');
+Lib::loadClass('Request');
+Lib::loadClass('Response');
+Lib::loadClass('ProcesHelper');
+Lib::loadClass('Route_UrlAction');
+Lib::loadClass('UI');
+
+class Route_UrlAction_UserProNetMediaZaliczka extends RouteBase {// TODO: UrlActionBase @see Route_UrlAction
+
+	public function handleAuth() {
+		if (!User::logged()) {
+			User::authByRequest();
+		}
+	}
+
+	public function defaultAction() {
+		UI::gora();
+		UI::emptyTag('link', ['href'=>'static/zaliczka/main.css', 'rel'=>'stylesheet']);
+		if (1 != V::get('_print', '', $_GET)) UI::menu();
+		try {
+			$data = array();
+			$data['id_user'] = V::get('ID_PROJECT', User::getID(), $_REQUEST, 'int');
+
+			$this->zaliczkaFormView($data);
+		} catch (Exception $e) {
+			UI::alert('danger', "Error #" . $e->getCode() .  "|" . $e->getLine() .  ": " . $e->getMessage());
+		}
+		if (1 != V::get('_print', '', $_GET)) UI::dol();
+	}
+
+	public function zaliczkaFormView($data) {
+		$idUser = V::get('id_user', User::getID(), $data);
+
+		UI::tag('div', ['id'=>"zaliczka-app", 'data-dbg'=>V::get('DBG', '', $_GET), 'data-sync-js-function'=>"syncZaliczkaState", 'data-fetch-data-js-function'=>"zaliczkaFetchData"]);
+		UI::emptyTag('br');
+
+		$acl = Core_AclHelper::getAclByNamespace("default_objects/zaliczka");//User::getAcl()->getObjectAcl();
+		$schema = $this->getSchema();//$acl->getSimpleSchema();
+		$zaliczkaData = $this->fetchDataBySchema($schema, $idUser);
+
+		?>
+<script>
+function zaliczkaFetchData(query, fieldType, resultCallback) {
+  console.warn('TODO: zaliczkaFetchData(query, fieldType, resultCallback)  query('+query+') fieldType:', fieldType);
+
+  // fieldType: Object {"@baseTypeName": "default_db:IN7_DZIENNIK_KORESP", id: "xsd:integer", title: "xsd:string", kategoriaKosztu: "xsd:string"}
+  if ('object' === typeof fieldType) {
+    if (!fieldType['@baseTypeName']) {
+      // TODO: log error
+      console.error("BUG: Missing typeName in fieldType");
+      return;
+    }
+    switch (fieldType['@baseTypeName']) {
+      case 'default_db:IN7_DZIENNIK_KORESP': {
+        console.warn("TODO: fetch by ajax default_db:IN7_DZIENNIK_KORESP");
+        var options = [
+          { id: 65432, title: 'testowa koresp 1', kategoriaKosztu: 'KOSZT1' },
+          { id: 10008, title: 'testowa koresp 8', kategoriaKosztu: 'KOSZT8' },
+          { id: 10009, title: 'testowa koresp 9', kategoriaKosztu: 'KOSZT9' },
+        ]
+        resultCallback(options);
+      } break;
+      case 'default_db:IN7_MK_BAZA_DYSTRYBUCJI': {
+        console.warn("TODO: fetch by ajax default_db:IN7_MK_BAZA_DYSTRYBUCJI");
+        var options = [
+          { id: 100, nrBudowy: 'Budowa 100/2016' },
+          { id: 101, nrBudowy: 'Budowa 101/2016' },
+          { id: 102, nrBudowy: 'Budowa 102/2016' },
+        ]
+        resultCallback(options);
+      } break;
+      default: {
+        console.log("BUG: Unsupported type namespace '" + fieldType['@baseTypeName'] + "'");
+      }
+    }
+  } else {
+    console.log("BUG: Unsupported type '" + fieldType + "'");
+    return;
+  }
+}
+
+function syncZaliczkaState(state, updates, stateSyncSyccessCallback, stateSyncErrorCallback) {
+  // TODO: if ajax success then stateSyncSyccessCallback(Response.data)
+  // TODO: if ajax fail then stateSyncErrorCallback(Response.data)
+  console.log('====== TODO: syncZaliczkaState updates:', updates, 'state:', state);
+  if (null === updates) {
+    var data = {
+      nierozliczonaKwota: 300,
+      schema: {
+        zaliczka: <?= json_encode($schema); ?>
+      },
+      zaliczka: <?= json_encode($zaliczkaData); ?>
+    }
+    setTimeout(function() {
+      stateSyncSyccessCallback({data: data});// TODO: app state + updates from api Response
+    }, 1000);
+  } else {
+    setTimeout(function() {
+      stateSyncSyccessCallback({data: state});// TODO: app state + updates from api Response
+    }, 1000);
+  }
+}
+
+</script>
+<?php
+		UI::tag('script', ['src'=>'static/zaliczka/main.js' . (V::get('DBG', '', $_GET) ? '?_ts=' . time() : ''), 'type'=>'text/javascript']);
+	}
+
+	public function fetchDataBySchema($schema, $idUser, $primaryKey = null) {// if $primaryKey is null then search for last row
+		return [// TODO: fetch data from DB
+			'id' => 123,
+			'created' => '2016-11-22', // data wydania zaliczki - data utworzenia rekordu
+			'worker' => [
+				'id' => 666,
+				'name' => 'Kowalski', // 'TODO' => get name from admin_users - imię i nazwisko pracownika pobierającego zaliczkę
+				'login' => 'kowalski'
+			],
+			'kwota' => 555.55, // kwota wypłaconej zaliczki
+			'pozycja' => [
+				[ 'id' => 1,
+					'kwota' => 100.22,
+					'korespondencja' => [ 'id' => 65432, 'title' => 'testowa koresp 1', 'kategoriaKosztu' => 'KOSZT1' ],
+					'projekt' => [ 'nrBudowy' => 'Budowa/1' ]
+				],
+				[ 'id' => 2,
+					'kwota' => 200.55,
+					'korespondencja' => [ 'id' => 76543, 'title' => 'testowa koresp 2', 'kategoriaKosztu' => 'KOSZT2' ],
+					'projekt' => [ 'nrBudowy' => 'Budowa/2' ]
+				]
+			]
+		];
+	}
+
+	public function getSchema() {
+		return [// var zaliczkaFlatSchema
+			'__baseTypeName' => 'default_db:ZALICZKA',
+			'id' => 'xsd:integer',
+			'created' => 'xsd:date',
+			'worker' => [// 'ref:worker',
+				'__baseTypeName' => 'default_db:ADMIN_USERS',
+				'name' => 'xsd:string',
+				'login' => 'xsd:string'
+			],
+			'kwota' => 'xsd:decimal',
+			'pozycja' => [// 'ref:pozycja'
+				'__baseTypeName' => 'default_db:ZALICZKA_POZYCJA',
+				'id' => 'xsd:integer',
+				'kwota' => 'xsd:decimal',
+				'korespondencja' => [// 'ref:korespondencja'
+					'__baseTypeName' => 'default_db:IN7_DZIENNIK_KORESP',
+					'id' => 'xsd:integer',
+					'title' => 'xsd:string',
+					'kategoriaKosztu' => 'xsd:string'
+				],
+				'projekt' => [// 'ref:projekt'
+					'__baseTypeName' => 'default_db:IN7_MK_BAZA_DYSTRYBUCJI',
+					'id' => 'xsd:integer',
+					'nrBudowy' => 'xsd:string'
+			  ]
+		  ]
+		];
+	}
+
+}
+
+/*    Akcje
+
+# dodanie pierwszej zaliczki - 500 zł
+$data = [ worker => [ login => 'Kowalski' ], kwota => 500.00 ]
+insert into `ZALICZKA` (`L_APPOITMENT_USER`, `KWOTA`) values('{$data['worker']['login']}', '{$data['kwota']}');
+-- return id = 123
+
+# rozliczenie częściowe pierwszej zaliczki np. 500 zł
+$data = [ id => 123, pozycja => [ [ kwota => 200.00, korespondencja => [ ... ], projekt => [ ... ] ] ] ]
+update `ZALICZKA__#REF__POZYCJA` set `A_STATUS` = 'DELETED' where `PRIMARY_KEY` = 123;
+
+
+*/
+/* -- Struktura
+
+CREATE TABLE IF NOT EXISTS `ZALICZKA__#REF__POZYCJA` ( `PRIMARY_KEY` int(11), `REMOTE_PRIMARY_KEY` int(11),  );
+
+CREATE TABLE IF NOT EXISTS `ZALICZKA` (
+	`ID` int(11) NOT NULL AUTO_INCREMENT,
+	`A_RECORD_CREATE_DATE` datetime  DEFAULT NULL,
+	`A_RECORD_CREATE_AUTHOR` varchar(20)  DEFAULT NULL,
+	`A_RECORD_UPDATE_DATE` datetime  DEFAULT NULL,
+	`A_RECORD_UPDATE_AUTHOR` varchar(20) NOT NULL DEFAULT '',
+	`A_STATUS` enum('WAITING','NORMAL','MONITOR','WARNING','OFF_SOFT','OFF_HARD','DELETED') DEFAULT NULL,
+	`A_ADM_COMPANY` varchar(100) NOT NULL DEFAULT '',
+	`A_CLASSIFIED` varchar(100) NOT NULL DEFAULT '',
+	`L_APPOITMENT_USER` varchar(100) NOT NULL DEFAULT '',
+	`KWOTA` decimal(16,2) NOT NULL DEFAULT 0,
+	`NIEROZLICZONA_KWOTA` decimal(16,2) NOT NULL DEFAULT 0,
+	PRIMARY KEY (`ID`)
+	KEY `ID_PROJECT` (`ID_PROJECT`)
+) ENGINE=MyISAM DEFAULT CHARSET=latin2;
+
+CREATE TABLE IF NOT EXISTS `ZALICZKA_HIST` (
+	`ID` int(11) NOT NULL AUTO_INCREMENT,
+	`ID_USERS2` int(11) NOT NULL,
+	`A_RECORD_CREATE_DATE` varchar(20) NOT NULL DEFAULT 'N/S;',
+	`A_RECORD_CREATE_AUTHOR` varchar(20) NOT NULL DEFAULT 'N/S;',
+	`A_RECORD_UPDATE_DATE` varchar(20) NOT NULL DEFAULT 'N/S;',
+	`A_RECORD_UPDATE_AUTHOR` varchar(20) NOT NULL DEFAULT 'N/S;',
+	`A_STATUS` varchar(20) NOT NULL DEFAULT 'N/S;',
+	`A_ADM_COMPANY` varchar(100) NOT NULL DEFAULT 'N/S;',
+	`A_CLASSIFIED` varchar(100) NOT NULL DEFAULT 'N/S;',
+	`L_APPOITMENT_USER` varchar(100) NOT NULL DEFAULT 'N/S;',
+	`KWOTA` varchar(16) NOT NULL DEFAULT 'N/S;',
+	`NIEROZLICZONA_KWOTA` varchar(16) NOT NULL DEFAULT 'N/S;',
+	PRIMARY KEY (`ID`),
+  KEY `ID_USERS2` (`ID_USERS2`)
+) ENGINE=MyISAM  DEFAULT CHARSET=latin2;
+
+*/

+ 25 - 0
SE/se-lib/Schema/ZaliczkaPozycjaStorageAcl.php

@@ -0,0 +1,25 @@
+<?php
+
+Lib::loadClass('Core_AclSimpleSchemaBase');// extends Core_AclBase
+Lib::loadClass('Core_AclHelper');
+Lib::loadClass('FileStorage');
+
+class Schema_ZaliczkaPozycjaStorageAcl extends Core_AclSimpleSchemaBase {
+
+  public $_simpleSchema = [// var zaliczkaFlatSchema
+    '@typeName' => 'default_objects:ZaliczkaPozycja',
+    '@baseTypeName' => 'default_db:ZALICZKA_POZYCJA',
+    'id' => 'xsd:integer',
+    'kwota' => 'xsd:decimal',
+    'korespondencja' => 'ref:default_db:IN7_DZIENNIK_KORESP',
+      // 'id' => 'xsd:integer',
+      // 'title' => 'xsd:string',
+      // 'kategoriaKosztu' => 'xsd:string'
+    'projekt' => 'ref:default_db:IN7_MK_BAZA_DYSTRYBUCJI',
+      // 'id' => 'xsd:integer',
+      // 'nrBudowy' => 'xsd:string'
+  ];
+  public function getName() { return 'ZaliczkaPozycja'; }
+  public function getRootTableName() { return 'ZALICZKA_POZYCJA'; }
+
+}

+ 31 - 159
SE/se-lib/Schema/ZaliczkaStorageAcl.php

@@ -1,168 +1,40 @@
 <?php
 <?php
 
 
-Lib::loadClass('Core_AclBase');
+Lib::loadClass('Core_AclSimpleSchemaBase');// extends Core_AclBase
 Lib::loadClass('Core_AclHelper');
 Lib::loadClass('Core_AclHelper');
 Lib::loadClass('FileStorage');
 Lib::loadClass('FileStorage');
 
 
-class Schema_ZaliczkaStorageAcl extends Core_AclBase {
+class Schema_ZaliczkaStorageAcl extends Core_AclSimpleSchemaBase {
 
 
-  public function __construct() {
-    $this->parentAcl = User::getAcl()->getObjectAcl('default_db', 'USER_ZALICZKA');
-    // DBG::_(true, true, "parentAcl", $this->parentAcl, __CLASS__, __FUNCTION__, __LINE__);
-  }
-  public function getNamespace() { return 'default_objects/' . $this->getName(); }
-  public function getSourceName() { return 'default_objects'; }
-  public function init($force = false) {}
-  public function isInitialized() { return true; }
-  public function getName() { return 'Zaliczka'; }
-  public function getRootTableName() { return 'USER_ZALICZKA'; }
-  public function getFieldListByIdZasob() { return $this->getRealFieldListByIdZasob(); }
-  public function getVisibleFieldListByIdZasob() { return $this->getRealFieldListByIdZasob(); }
-  public function getVirtualFieldListByIdZasob() { return array(); }
-  public function getRealFieldListByIdZasob($force = false) {
-    $cols = $this->parentAcl->getRealFieldListByIdZasob();
-    $cols[100001] = 'Pracownik';
-    $cols[100002] = 'Pozycja';
-    return $cols;
-  }
-  public function getFields() {// @returns array - $this->_fields
-    $fields = $this->parentAcl->getFields();
-    $fields[100001] = ['name'=>'Pracownik', 'perms'=>'RWXC', 'opis'=>'Pracownik pobierający zaliczkę', 'sort_prio'=>1000, 'label'=>'Pracownik'];
-    $fields[100002] = ['name'=>'Pozycja', 'perms'=>'RWXC', 'opis'=>'Pozycje zaliczki', 'sort_prio'=>1001, 'label'=>'Pozycje'];
-    return $fields;
-  }
-  public function getFieldType($fieldName) {
-    foreach ($this->getFields() as $field) {
-      if ($fieldName == $field['name']) return $field;
-    }
-    return null;
-	}
-
-  // TODO: replace legacy functions: isAllowed, hasFieldPerm, getFieldIdByName
-  public function canCreateField($fieldName) {
-    if ('Pracownik' == $fieldName) return true;
-    if ('Pozycja' == $fieldName) return true;
-    return $this->parentAcl->canCreateField($fieldName);
-  }
-  public function canReadField($fieldName) {
-    if ('File' == $fieldName) return true;
-    if ('AccessGroupRead' == $fieldName) return true;
-    if ('AccessGroupWrite' == $fieldName) return true;
-    if ('AccessOwner' == $fieldName) return true;
-    return $this->parentAcl->canReadField($fieldName);
-  }
-  public function canReadObjectField($fieldName, $record) {
-    if ('File' == $fieldName) return true;
-    if ('AccessGroupRead' == $fieldName) return true;
-    if ('AccessGroupWrite' == $fieldName) return true;
-    if ('AccessOwner' == $fieldName) return true;
-    return $this->parentAcl->canReadObjectField($fieldName, $record);
-  }
-  public function canWriteField($fieldName) {
-    if ('File' == $fieldName) return true;
-    if ('AccessGroupRead' == $fieldName) return true;
-    if ('AccessGroupWrite' == $fieldName) return true;
-    if ('AccessOwner' == $fieldName) return true;
-    return $this->parentAcl->canWriteField($fieldName);
-  }
-  public function canWriteObjectField($fieldName, $record) {
-    if ('File' == $fieldName) return true;
-    if ('AccessGroupRead' == $fieldName) return true;
-    if ('AccessGroupWrite' == $fieldName) return true;
-    if ('AccessOwner' == $fieldName) return true;
-    return $this->parentAcl->canWriteObjectField($fieldName, $record);
-  }
+  public $_simpleSchema = [
+    '@typeName' => 'default_objects:Zaliczka',
+    '@baseTypeName' => 'default_db:ZALICZKA',
+    'id' => 'xsd:integer',
+    'created' => 'xsd:date',
+    'worker' => [
+      '@ref' => 'default_objects:AccessOwner',// local_ref:default_objects:AccessOwner
+    ],
+    'kwota' => 'xsd:decimal',
+    'pozycja' => [
+      '@ref' => 'default_objects:ZaliczkaPozycja',
+      '@maxOccurs' => 'unbounded',
+      // 'id' => 'xsd:integer',
+      // 'kwota' => 'xsd:decimal',
+      // 'korespondencja' => [// 'ref:korespondencja'
+      // 	'@baseTypeName' => 'default_db:IN7_DZIENNIK_KORESP',
+      // 	'id' => 'xsd:integer',
+      // 	'title' => 'xsd:string',
+      // 	'kategoriaKosztu' => 'xsd:string'
+      // ],
+      // 'projekt' => [// 'ref:projekt'
+      // 	'@baseTypeName' => 'default_db:IN7_MK_BAZA_DYSTRYBUCJI',
+      // 	'id' => 'xsd:integer',
+      // 	'nrBudowy' => 'xsd:string'
+      // ]
+    ]
+  ];
 
 
-  public function getTotal($params = array()) {// TODO: use ParseOgcQuery
-    $DBG = V::get('DBG_DS', 0, $_GET, 'int');
-    if($DBG>2){echo 'C.'.get_class($this).' L.' . __LINE__ . " getTotal \$params:";print_r($params);echo "\n";}
-    return $this->parentAcl->getTotal($params);
-  }
-  public function getItem($primaryKey) {
-    $items = $this->getItems(['primaryKey'=>$primaryKey]);
-    return (!empty($items[$primaryKey])) ? $items[$primaryKey] : null;
-  }
-  public function getItems($params = array()) {// TODO: use ParseOgcQuery
-    $DBG = V::get('DBG_DS', 0, $_GET, 'int');
-    if($DBG>2){echo 'C.'.get_class($this).' L.' . __LINE__ . " getItems \$params:";print_r($params);echo "\n";}
-    $items = array();
-    $rawItems = $this->parentAcl->getItems($params);
-    foreach ($rawItems as $pk => $item) $items[$pk] = (array)$item;
-    if($DBG>2){echo 'C.'.get_class($this).' L.' . __LINE__ . " getItems \$items:";print_r($items);echo "\n";}
-    if (empty($items)) return $items;
-    $this->fetchItemRef($items);// TODO: only fields from request
-    if($DBG>2){echo 'C.'.get_class($this).' L.' . __LINE__ . " getItems after fetchItemRef \$items:";print_r($items);echo "\n";}
-    return $items;
-  }
-  public function fetchItemRef(&$items) {
-    $DBG = V::get('DBG_DS', 0, $_GET, 'int');
-    $refs = array();// fieldName => xsdType
-    foreach ($this->getRealFieldListByIdZasob() as $id => $fieldName) {
-      $fieldType = $this->getXsdFieldType($fieldName);
-      if ('ref:' == substr($fieldType, 0, 4)) $refs[$fieldName] = substr($fieldType, 4);
-      else if ('alias_ref:' == substr($fieldType, 0, 10)) {
-        $refs[$fieldName] = substr($fieldType, 10);
-      }
-    }
-    if (empty($refs)) return $items;
-    $pkList = array_keys($items);
-    $sqlPk = array(); foreach ($pkList as $pk) { $sqlPk[] = DB::getPDO()->quote($pk, PDO::PARAM_STR); } $sqlPk = implode(", ", $sqlPk);
-    $refRows = array();// $fieldName => [ pk, ... ]
-    foreach ($refs as $fieldName => $type) {
-      $acl = Core_AclHelper::getAclByTypeName($type);
-      // TODO: Core_AclBase->fetchRefs($fieldName, $pkList = array());// $refPk[$fieldName] = $this->fetchRefs($fieldName, $pkList);
-      $refTableName = $this->createRefTable($fieldName);
-      if($DBG>2){echo 'C.'.get_class($this).' L.' . __LINE__ . " getItems loop(\$fieldName:{$fieldName}) \$refTableName:({$refTableName})";echo"\n";}
-      $refRows[$fieldName] = DB::getPDO()->fetchAllByKey("
-        select r.*
-        from `{$refTableName}` r
-        where r.PRIMARY_KEY in({$sqlPk})
-          and r.A_STATUS != 'DELETED'
-      ", $key = 'PRIMARY_KEY');
-      if($DBG>2){echo 'C.'.get_class($this).' L.' . __LINE__ . " getItems loop(\$fieldName:{$fieldName}) \$refTableName:({$refTableName}), \$refRows[$fieldName]";print_r($refRows[$fieldName]);echo"\n";}
-    }
-    foreach ($refRows as $fieldName => $refList) {
-      foreach ($refList as $pk => $ref) {
-        $items[ $pk ][ $fieldName ][] = array('xlink' => "{$refs[$fieldName]}.{$ref['REMOTE_PRIMARY_KEY']}");
-      }
-    }
-  }
-  public function addItem($itemTodo) {
-    return $this->parentAcl->addItem($itemTodo);
-  }
-  public function updateItem($itemPatch) {
-    return $this->parentAcl->updateItem($itemPatch);
-  }
-
-  public function getGeomFieldType($fieldName) { return null; }
-  public function getPrimaryKeyField() { return 'ID'; }
-  public function getID() { return 0; }
-  public function getAttributesFromZasoby() { return array(); }
-  public function isEnumerationField($fieldName) {
-    if ('A_STATUS' == $fieldName) return true;
-    return false;
-  }
-  public function getEnumerations($fieldName) {
-    if ('A_STATUS' == $fieldName) return $this->parentAcl->getEnumerations($fieldName);
-    return null;
-  }
-  public function getXsdFieldType($fieldName) {
-    if ('File' == $fieldName) return 'ref:p5_objects:File';
-    // if ('File1' == $fieldName) return 'alias_ref:p5_objects:File';
-    // if ('File2' == $fieldName) return 'alias_ref:p5_objects:File';
-    // if ('NestedObjectTest' == $fieldName) return 'local_ref:p5_objects:NestedObjectTest';
-    if ('AccessGroupRead' == $fieldName) return 'ref:default_objects:AccessGroupRead';
-    if ('AccessGroupWrite' == $fieldName) return 'ref:default_objects:AccessGroupWrite';
-    if ('AccessOwner' == $fieldName) return 'ref:default_objects:AccessOwner';
-    return $this->parentAcl->getXsdFieldType($fieldName);
-  }
-  public function isGeomField($fldName) {
-    if ('File' == $fieldName) return false;
-    if ('AccessGroupRead' == $fieldName) return false;
-    if ('AccessGroupWrite' == $fieldName) return false;
-    if ('AccessOwner' == $fieldName) return false;
-    // if ('NestedObjectTest' == $fieldName) return false;
-    return $this->parentAcl->isGeomField($fldName);
-  }
+  public function getName() { return 'Zaliczka'; }
+  public function getRootTableName() { return 'ZALICZKA'; }
 
 
 }
 }

+ 1 - 0
SE/static/zaliczka/main.css

@@ -0,0 +1 @@
+.App{text-align:center}.App-logo{-webkit-animation:App-logo-spin infinite 20s linear;animation:App-logo-spin infinite 20s linear;height:80px}.App-header{background-color:#222;height:150px;padding:20px;color:#fff}.App-intro{font-size:large}@-webkit-keyframes App-logo-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes App-logo-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}body{margin:0;padding:0;font-family:sans-serif}

文件差異過大導致無法顯示
+ 0 - 0
SE/static/zaliczka/main.js


部分文件因文件數量過多而無法顯示