# jSchema # 3.12.0 (2020-02-25) ## Nowe funkcje - `flatPropsList(schema)` - zwraca płaską listę wszystkiech właściwości ze schematu - `flatPropsList(schema,true)` - na liście będą tylko typy proste (z pominięciem `object` i `array`) # 3.11.3 (2020-02-17) ## Poprawki - podprawione działanie `length` przy zmianach `disabled`, np. włączanie powoduje sprawdzenie `length` # 3.11.2 (2020-02-17) ## Poprawki - poprawione działanie dynamicznego `disabled` przy statycznym `length` na tablicach - poprawione atuomatycznie importy # 3.11.0 (2020-02-14) - `disabled` nie usuwa pola, a jedynie go zeruje, pole nie jest pobierane przy `$getData()` chyba że jest ustawione `default` - automatyczne `wrapAll` dla małych modeli danych (poniżej 100 wszystkich pól) - możliwość umieszczenia ustawień w schemacie, np. komunikatów: ```JSON { "$options": { "validationMaessages": { "required": "Wypełnienie jest obowiązkowe" } } } ``` - zmiana obsługi ustawiania danych na tabelach zawierających proste dane, dzieki temu zmiany są rektywne # 3.10.1 (2020-02-12) ## Nowe funkcje - dodanie `debugger` w miejscach gdzie są błedy w obliczeniach # 3.10.0 (2020-02-12) ## Nowe funkcje - pole `disabled` w schemacie oznczające że pole jest wyłaczone, jeśli pole jest stringiem to jest wyliczalne - ustawianie `undefined` lub `default` (jak jest) - wyłączenie walidacji i ostrzeżeń - wyłączenie calc i aggregate ## Poprawki kodu - refactoring funkcji sprawadzjącej poprawnośc formatów tekstowych `formatFunctions` - refactoring testów jednostrkowych - uspójnienie wersji plików `tes` # 3.9.1 (2020-02-08) ## Poprawki nazw plików - `fmoneyspace.ts` -> `fmoneySpace.ts` - zmiana nazwy pliku # 3.9.0 (2019-01-06) ## Nowe funkcje - `listNumberFormat` - formatowanie liczby do formatu uzywanego na listach numerowanych np. `a)` `XXI.` - `nextListNumber` - następna liczba z poziomu numerowania, łącznie z formatowaniem # 3.8.1 (2019-01-31) ## Poprawki \$methods - `slownie` -> `toWords` - zmiana nazwy funkcji - `slowniezl` -> `toWordsMoney` - zmiana nazwy funkcji # 3.8.0 (2019-02-03) ## Nowe funkcje - `$schema.$fixDateFormat` - naprawia format daty w polu i wszystkich porzędnych - `date` - obcina godziny - `date-time` - dodaje `00:00:00`, zamienia `"T"` z zapisu `JSON` na `" "` # 3.7.0 (2019-01-31) ## Nowe funkcje \$methods - `percent` - oblicza watośc procentową z dwóch liczb, zabezpiecza przed dzieleniem przez 0 i przed różnymi znakami # 3.6.5 (2019-01-31) ## Poprawki - `slownie` - przy bardzo wielkich liczbach (do których nie ma opisanych jednostek) zwraca ciąg pusty, wcześniej się wywalało # 3.6.4 (2019-01-30) ## Poprawki - `$schema.description` i `$description` - jest teraz dostępne, wcześniej się nie przenosiło # 3.6.3 (2019-01-30) ## Poprawki - `slownie` - poprawka `144000` było `tysiące` jest `tysięcy` # 3.6.2 (2019-01-30) ## Poprawki - `this.$methods` - dostępny już `data()` (ustawiany jest w `beforeCreate()`) - `$methods.fmoneyspace` - może przyjmować string (np. `$value`) - aktualizacja storybook # 3.6.0-3.6.1 (2019-01-29) ## Nowe funkcje - `$methods.slownie` - zamiana liczby całkowitej na słownie - `$methods.slowniezl` - zamiana kwwoty na słownie złotych - `$methods.fmoneyspace` - zamiana liczby na tekst ze spacjami `1234.87` => `1 234,87` - `$methods` - ustawiane jest przez `schemaMixin` teraz w `Vue.prototype` przez co jest dos†epne w każdym komponencie # 3.5.1 (2020-01-24) ## Poprawki - `$warnings` i `$check` poprawiono obsługe ostrzeżeń w przypadku pustych wartości # 3.5.0 (2020-01-23) ## Nowe funkcje - `format` dodano `kw` - czyli księga wieczysta format: `SL1S/12345678/9`, weryfikuje poprawnosc symbolu sądu jak i sumę kontrolną - `$methods` dodano `sum`,`avg`,`distinct`,`distinctItem` # 3.4.0 (2020-01-23) ## Nowe funkcje - `aggreagate` - `distinct` - lista unikalnych wartości zdefiniowanych w `prop` - `aggreagate` - `distinctitem` - lista wszystkich elementów z unikalnymi `prop`, w odróżnieniu od `distinct` zwraca całe wiersze # 3.3.0 (2020-01-22) ## Nowe funkcje - `classToSchema` - zamienające klasę TS na schemat przy pomocy dekoratorów `@SchemaProperty` - do wyrzucenia na osobny npm # 3.2.2 (2019-12-18) ## Nowe funkcje - **\$methods** - metoda `moment` do obsługi `moment` # 3.2.1 (2019-12-05) ## Poprawki - **calc** i **aggregate** - gdy zwracana wartość jest obiektem to jest dodatkowo robione `deepCopy` aby funkcja reagowała na zmianę każdej właściwości zwracanego obiektu - **\$methods** - metoda `deepCopy` do kopiowania obiektów # 3.2.0 (2019-12-03) ## Nowe funkcje - **validFunc** - treść funkcji może być wielolinijkowa, wtedy wynik trzeba umieścić w `$result` lub natychmiast zwrócić przez `return`: ```JSON "validFunc": [ "if (this.cena1>0) {", " if (this.cena2>0) {", " return 'cena 2 musi być zerowa';", " }", "}" ] ``` - wielolinijkowe wersja funkcji są dopuszczalne w: - `minimum` - `maximum` - `exclusiveMinimum` - `exclusiveMaximum` - `minLength` - `maxLength` - `minItems` - `maxItems` ```JSON minimum: [ "if (this.cena1>10) return this.cena1;", "$result = this.cena2" ] ``` # 3.1.0 (2019-12-03) ## Poprawki - **\$checkAll()** - prawidłowo zwraca tylko te elementy z niepustą tablicą `$warnings` ## Nowe funckje - **calc** - treść funkcji może być wielolinijkowa, wtedy wynik trzeba umieścić w `$result`, można tez zwrócić przez `return` ale wtedy nie zadziałają zaokrąglenia do typu docelowego (`integer`, `money`): ```JSON "calc": [ "var ile = this.ilosc;", "if (ile>10) {", " $result = ile * this.cena", "} else {", " $result = this.cena", "}" ] ``` # 3.0.5 (2019-12-02) ## Poprawki - **WrappedPropertyArray** - zmiana `$obj.$parent2` i `$obj.$parent3` na dostęp do obiektu a nie do danych # 3.0.3 (2019-12-02) ## Poprawki - **WrappedPropertyArray** - poprawiony dostęp do `$obj.$parent2` i `$obj.$parent3` z poziomu `calc` i `aggreagte` # 3.0.2 (2019-11-25) ## Poprawki - **WrappedPropertyObject** - poprawione zachowanie dla wartości `null` ustawionej na obiekcie, tworzą się właściwości ale są `null` - **WrappedPropertyObject** - poprawiona walidacja `fieldRequired` sprawdzjąca czy obiekt jest `null` # 3.0.1 (2019-11-25) ## Poprawki - **validate** - prawidłowa obsługa `filedRequired`, niestety nadal nie działa `validFunc` ani wyliczane walidacje - **IWrappedProperty** - definicja `$error` i `$warnings` # 3.0.0 (2019-11-22) ## Nowe funkcje - **JSONSchem** - deifniowanie ostrzeżeń podobnie jak walidacji, odobny klucz `warnings`, który moe zawierać równiez `warningMessages` ```JSON cena3: { "type": "money", "warnings": { "minimum": "this.cena1", "warningMessages": { "minimum": "Zalecana minimalna wartość: {{minimum}}" } } }, ``` - **SchemaWrapper** - rozszerzenia dotyczące ostrzezeń - `$warnings` - odczyt ostrzezen, zwraca tablice, pusta gry ostrzezen nie ma - `$check()` - sprawdza poprawność na podtawie zdefiniowanych `warnings` - `$checkAll()` - zwraca wszystkie pola które mają przynajlniej jedno ostrzezenie - **schema** - `$schema.itemType` - oznacza typ elementu dla typu tablicowego - **fixAdnMErgeScchema** - usprawniona obsługa `$ref` - `#` - odnosi się do root - `#/definitions` - odnosi się do `definitions` w root - `nazwa` - odnosi się do innego pola na tym samym poziomie, coś jak `this` - `..` - oznacza poziom wyzej w schemcie w stosunku do poziomu pola, coś jak `parent` # 2.11.3 (2019-11-06) ## Poprawki - **fixAndMerge** - poprawione określanie domyslnego typu (`type` nie jest wyliczalny), przydatne w łaczeniu `allOf` i dziedziczeniu # 2.11.2 (2019-10-31) ## Poprawki - **aggregate** - poprawione wyznaczanie `first` i `last` # 2.11.1 (2019-10-17) ## Poprawki - **mround** - poprawione zaokrąglanie, zawsze zaokrągla poza liczbami całkowitymi # 2.11.0 (2019-10-14) ## Nowe funkcje - **schemaMixin** - dostęp do `$methods` przez `this.$methods` z poziomu głównego komponentu ## Poprawki - **schemaMixin** - naprawiono `this` w zdarzeniach `beforeFixSchema` `beforeSchema` i `afterSchema` # 2.10.1 (2019-10-11) ## Poprawki - **IWrappedProperty:** - od teraz można odwoływać się na pola `$parent2` oraz `$parent3`. Problem występował gdy przy `aggregate` robiliśmy dość skomplikowaną operację, np: `obj.$parent.$parent.$parent.$key`, zostało to zamieniane na `obj.$parent3.$key` (które posiadało wartość `undefined`) # 2.10.0 (2019-09-25) ## Nowe funkcje - **TimeSpan:** - od teraz `TimeSpan` zwraca też różnicę w latach (przydatne do obliczania wieku czyjeś osoby) # 2.9.2 (2019-08-27) ## Poprawki - **array:** - teraz walidacja działa poprawnie. Przeniesiono do `validate` z `validateAll` # 2.9.1 (2019-08-22) ## Poprawki - **array:** - w momencie wywołania metody `$schema.$validateAll()` gdy array był `$dirty = false` nie zwracało komunikatu z błędem, lecz błąd występował. Bląd został wyeliminowany. # 2.9.0 (2019-08-22) ## Zmiany - **methods:** - dodanie metody `includesAll`, która sprawdza czy pierwsza tablica zawiera wszystkie elementy z drugiej tablicy # 2.8.2 (2019-08-07) ## Poprawki - **length:** - prawidłowa ustawianie długości tablicy na starcie # 2.8.1 (2019-08-07) ## Poprawki - **fixSchema:** - łączenie `default` poprzez `allOf` umożliwia teraz nadpisanie wartością `null` - **WitkacJSonSchema:** - dodanie obsługi `enum` w `validationMessages` # 2.8.0 (2019-08-06) ## Zmiany - **\$validate:** - `enum` prawidłowo weryfikuje wartości `null` - **filedRequired:** - w przypadku `boolean` gdy wymagana wartośc pola to `true` lepiej zastosować `enum: [true]`, a `fieldRequired` zostawić dla wartości `null` - **\$value:** - prawidłowy zapis wartości `null` przy typach `boolean` i `string` # 2.7.1 (2019-08-05) ## Poprawki - **calc/aggreagte:** - ustawianie `$dirty` dopiero po pierwszym prawidłowym obliczeniu wartości, przy `undefined` się `$dirty` nie ustawia # 2.7.0 (2019-08-02) - **format** dodanie nowego formatu `passport` # 2.6.0 (2019-08-02) - **methods** dodanie metody `dateFromPesel`, która wyciąga datę z numeru PESEL # 2.5.1 (2019-07-30) - poprawione kompunikaty walidacji # 2.5.0-rc.3 (2019-07-29) - poprawiony npmignore # 2.5.0-rc.2 (2019-07-29) - **WrappedPropertyArray:** - poprawiono reagowanie na zmiany wielkości, już automatycznie nie uruchamia walidacji - **validFunc:** - testy storybook - **validationMessges:** - dodatkowe wartości: `{{key}}`, `{{title}}`, `{{format}}` - **validationMessges:** - możliwośc przeciążania w `schemaOptions` # 2.5.0-rc.1 (2019-07-29) ## Zmiany - **\$error:** - pole `$error` jest teraz wyliczane, nie trzeba odczytywać `$value` - **\$error:** - reaguje na dynamiczną zmianę walidacji - dodano `storybook` do szybszego testowania # 2.4.3 (2019-07-29) ## Poprawki - **enum:** - prawidłowa obsługa gdy `enum` zwraca `null` lub `undefined` # 2.4.2 (2019-07-29) ## Poprawki - **removeRow:** - poprawiono działanie tej funkcji na starcie # 2.4.1 (2019-07-23) ## Nowe funkcje - **format:** - `phone9` do srpawdzania poprawności 9 cyfrowego numeru telefonu, regex: `/^\d{9}$/` ## Poprawki - **validation:** - walidacje `minimum`, `maximum`, `exclusiveMinimum`, `exclusiveMaximum` zwracają sformatowane liczby (`type: "number"` i `type: "money"`) i daty (`format: "date"`) # 2.3.2 (2019-07-23) ## Poprawki - **calc:** - poprawione `result` # 2.3.1 (2019-07-22) ## Poprawki - **debug:** - poprawiony wygląd funkcji `aggregate` i `calc` aby ułatwić pracę w trybie debug, wyświetlanie ścieżki schematu - **schemaPath:** - wyliczanie ścieżki schematu z pominięciem `items` i `properties` - **WitkacJsonSchema.json:** - dodane brakujące wartości pola `format` # 2.3.0 (2019-07-18) ## Nowe funkcje - **validations:** - dodana obsługa `patternFlags` w przypadku użycia `pattern` - **validations:** - `enum` w przypadku gdy walidowane pole jest elementem tablicy, to w przypadku nie spełniania `enum` element jest automatycznie usuwany z tablicy # 2.2.3 (2019-07-17) ## Poprawki - **array:** - poprawione `$moveUp()` na elemencie tablicy # 2.2.2 (2019-07-17) ## Poprawki - **validate:** - poprawione czyszczenie błędów przy `$validate()` # 2.2.1 (2019-07-17) ## Poprawki - **dateDiff:** - poprawione przekazywanie parametrów # 2.2.0 (2019-07-17) ## Poprawki - **validation:** - walidacje stringów `minimum`, `maximum`, `exclusiveMinimum`, `exclusiveMaximum` działają tylko gdy wartość walidacji jest niepustym stringiem - refactoring funkcji JSchema, rozdzielone na pojedyncze pliki # 2.1.0 (2019-07-15) ## Nowe funkcje - **JSchema:** `$ref` może odwoływać się do tej samej gałęzi w której jest przez `./definitions` - **JSchema:** `$ref` może być zedefinowane dynamicznie na podstawie dostarczonego modelu np: `$ref: '#/definitions/typ{{typorganizacji}}'` ## Poprawki - **WrappedPropertyBase:** - naprawiono `$getData()` # 2.0.0 (2019-07-15) ## Nowe funkcje - **schemaWrapper:** usunięto - **schemaMixin:** poprawiono obudowywanie - **WrappedPropertyxxx:** klasy do obudowywania kolejnych elementóww schematu - **JSchema:** cache funkcji validujących, uruchamianie validacji z bieżącym schematem - **validFunc:** walidacja po zmianie parametrów w `validFunc` - szersze wykorzystane `Vue.observable`, gdy nie ma potrzeby to instancja Vue nie jest tworzona ## Poprawki - **WrappedPropertyBase:** - `$dirty` domyślnie na `undefined` - **WrappedPropertyNumber:** - poprawiona obsługa `precision` - **schemaMixin:** wywala błąd gdy brak pola `model` w `data` - **WrappedPropertyObject:** poprawione setValue - **schemaOptions:** `fixData` można ustawić false żeby nie naprawiało modelu na starcie - wywalenie niepotrzebnych console.log - **WrappedPropertyBase:** watcher dla `validFunc` wyłączenie `immediate` - **schemaMixin:** naprawiono ustawianie `$external` - **WrappedPropertyxxx:** poprawione odwołania - **WrappedPropertyxxx:** obudowanie walidacji zależne od typu danych # 1.7.1 (2019-07-08) ## Poprawki - **schemaMixin:** `length` nie zmienia teraz definicji schematu # 1.7.0 (2019-07-08) ## Zmiany - **schemaMixin:** obsługa błędów przy obliczaniu `calc` i `aggregate` - wypisywanie ścieżki, żeby łatwiej znaleźć miejsce w schemacie - tylko w trybie development, w trybie produkcyjnym nie pokazuje błędu - w przypadku błędu zwraca `undefined` i nie zmienia wartości oryginalnej w polu # 1.6.5 (2019-07-07) ## Poprawki - **schemaMixin:** poprawiono działanie dynamicznego `length` dla tablic # 1.6.3 (2019-07-04) ## Poprawki - **schemaMixin:** naprawiono domyślne komunikaty dla `minItems` # 1.6.2 (2019-06-27) ## Poprawki - **schemaMixin:** naprawiono domyślne komunikaty dla `exclusiveMinimum` i `exclusiveMaximum` # 1.6.1 (2019-06-27) ## Zmiany - **schemaMethods:** opis funkcji `dateParse` do parsowania dat - **schemaMixin:** usunięcie funkcji `clearSchema` i zmiana nazwy funkcji na `$setSchema(null)` # 1.6.0 (2019-06-27) ## Nowości - **schemaMethods:** funkcja `dateSet` do ustawiania częsci daty # 1.5.0 (2019-06-25) ## Nowości - **schemaMethods:** funkcja `fnumber` do formatowania liczb, bez dopisywania zer w częsci ułamkowej - **schemaWrapper:** typ `number` formatowany jest przy użyciu funkcji `fnumber` czyli bez dopisywania zer - **doc**: aktualizacja `README` ## Poprawki - **schemaWrapper:** poprawione użycie `precision` w formatowaniu liczb # 1.4.2 (2019-06-19) ## Poprawki - **schemaWrapper:** ustawienie `"debug": true` na poluz `aggregate` lub `calc` powoduje ustawienie debugger w srodku fukcji wyliczającej - **test:** poprawiony runner do testów, działa również na Windows, ustawiony root do testów dzięki czemu szybciej je przeszukuje # 1.4.1 (2019-06-17) ## Poprawki - **schemaWrapper:** w przypadku użycia `calc` lub `aggregate` na typie `array` lub `object` do ustawiania danych używa `$setData()` - **test:** poprawiony runner do testów, działa również na Windows, ustawiony root do testów dzięki czemu szybciej je przeszukuje # 1.4.0 (2019-06-17) ## Nowe funkcje - **schemaWrapper:** dodana funkcja `$dirtyList()` pobierająca pola ze statusem `$dirty` - **doc:** uzupełnine README o funkcje na `$schema` # 1.3.0 (2019-06-16) ## Nowe funkcje - **schemaMixin:** możliwośc zmiany schematu na istniejącej instancji - **schemaMixin:** wydzielenie metod: `setSchema(schema,[forceUpdate])` i `clearSchema()` # 1.2.3 (2019-06-14) ## Nowe funkcje - **SchemaWrapper:** sprawdza czy element jest `observable` jeśli nie to go modyfikuje - **SchemaWrapper:** możliwe na obiektach bez podania `parent` i `propName` - **SchemaWrapper:** error przy wyliczaniu aggregate zamieniony na `warn` # 1.1.0 (2019-06-14) ## Poprawki - **jschema:** zmieniona obsługa parametrów domyślnych w `fixAndMergeSchema` - **test:** testowanie samego wrappera, bez `schemaMixin` - **SchemaWrapper:** fix schema w razie potrzeby przy `wrap` # 1.0.2 (2019-06-13) ## Poprawki - **jschema:** poprawiony automatyczny typ, robi się też dla `items` # 1.0.1 (2019-06-11) ## Poprawki - **jschema:** poprawiony automatyczny typ "string", robi się tylko dla `properties` # 1.0.0 (2019-06-11) ## Zmiany organizacji - **schemaMethods:** każda funkcja w innym pliku, aby uniknąć cyklicznych odwołań - **lib:** export funkcji npm do lib - **dist:** zbodowane bundle do użycia w przeglądarce # 0.9.21 (2019-06-10) ## Nowe funkcje - **SchemaWrapper:** `options.wrapAll` obudowuje cały schemat na starcie # 0.9.19 (2019-06-05) ## Zmiany - **schemaMixin:** wyrzucenie funkcji do walidacji sekcji, przeniesiono do `smartadmin-components` # 0.9.18 (2019-06-04) ## Nowe funkcje - **schemaMethods:** `trim` do tekstów - **doc:** do README dodano przykład użycia # 0.9.17 (2019-06-03) ## Poprawki - **jschema:** poprawiony automatyczny typ "string" # 0.9.16 (2019-05-28) ## Nowe funkcje - **jschema:** gdy typ pola nie jest podany dobiera automatycznie `object`, `array` lub `string` w zależności czy jest `items` czy `properties` czy żadnego z nich, ma to na celu minifikacje schematu # 0.9.15 (2019-05-24) ## Poprawki - **walidacja:** poprawiona walidacja `required` i `type` dopiero po wyjściu z pola - **walidacja:** uruchomienie walidacji zawsze przy `$hasFocus = false` niezależnie czy wcześniej było true # 0.9.14 (2019-05-22) ## Poprawki - **schemaWrapper:** `$setData` dodano parametr `fixArraySize` w danych typu `array` # 0.9.13 (2019-05-09) ## Nowe funkcje - **polyfill:** `Array.includes` i `Object.keys` # 0.9.12 (2019-05-05) ## Nowe funkcje - **schemaWrapper:** `$setData` dodano parametr `fixArraySize` który powoduje że rozmiary tablic są zastępowane tymi z danych, `$setData(newValue: any,path: string,fixArraysize: boolean)` # 0.9.11 ## Nowe funkcje - **JSchema:** dodana obsługa `length` w definicj tablicy, pole jest dynamiczne i może być wyliczane na podstawie innych pól. Tablica ma zawsze długość ustawioną w `length` # 0.9.10 ## Nowe funkcje - **JSchema:** przy `aggregate` niepodanie `property` skutkuje tym, że agregowane są elementy tablic. Przydatne do aggregacji prostych tablic, np. `[1, 4, 11]`